{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "cf424321",
   "metadata": {},
   "outputs": [],
   "source": [
    "import csv\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "210244d8",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\user\\anaconda3\\envs\\downgrade\\lib\\site-packages\\torchvision\\io\\image.py:13: UserWarning: Failed to load image Python extension: Could not find module 'C:\\Users\\user\\anaconda3\\envs\\downgrade\\Lib\\site-packages\\torchvision\\image.pyd' (or one of its dependencies). Try using the full path with constructor syntax.\n",
      "  warn(f\"Failed to load image Python extension: {e}\")\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import torchvision\n",
    "import torchvision.datasets as dset\n",
    "import torchvision.transforms as transforms\n",
    "from torch.utils.data import DataLoader,Dataset\n",
    "import matplotlib.pyplot as plt\n",
    "import torchvision.utils\n",
    "import numpy as np\n",
    "import random\n",
    "from PIL import Image\n",
    "import torch\n",
    "from torch.autograd import Variable\n",
    "import PIL.ImageOps    \n",
    "import torch.nn as nn\n",
    "from torch import optim\n",
    "import torch.nn.functional as F\n",
    "\n",
    "import tensorflow as tf\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63d650b3-84f5-4a0d-b7e2-52c6e1695f23",
   "metadata": {},
   "source": [
    "## 데이터 불러오기"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "db42e884",
   "metadata": {},
   "outputs": [],
   "source": [
    "#트레인\n",
    "\n",
    "X= []\n",
    "Y = []\n",
    "\n",
    "f = open(\"train_data_4.csv\" , 'r')\n",
    "X = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "X = np.array(X)\n",
    "f.close()\n",
    "\n",
    "\n",
    "f = open(\"train_label_0.csv\" , 'r')\n",
    "Y = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "Y = np.array(Y)\n",
    "Y = Y.T\n",
    "\n",
    "f.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c6cc89fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "#테스트\n",
    "\n",
    "\n",
    "x_test = []\n",
    "label_test = []\n",
    "\n",
    "\n",
    "f = open(\"test_data_4.csv\" , 'r')\n",
    "x_test = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "x_test = np.array(x_test)\n",
    "f.close()\n",
    "\n",
    "\n",
    "f = open(\"test_label_0.csv\" , 'r')\n",
    "label_test = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "label_test = np.array(label_test)\n",
    "label_test = label_test.T\n",
    "f.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5fa2cd8a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1374, 50)\n",
      "(1374, 1)\n",
      "(700, 50)\n",
      "(700, 1)\n"
     ]
    }
   ],
   "source": [
    "#쉐이프 확인\n",
    "\n",
    "print(np.shape(X))\n",
    "print(np.shape(Y))\n",
    "\n",
    "print(np.shape(x_test))\n",
    "print(np.shape(label_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c2a826f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x21a9cf12ac0>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#그래프 확인\n",
    "plt.plot(x_test[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c16748ae",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "1e7f0808",
   "metadata": {},
   "outputs": [],
   "source": [
    "#1d cnn에 넣기 위해 쉐이프 다시 지정\n",
    "\n",
    "x_test = np.reshape(x_test,(700, 1, 50) )\n",
    "x_test = x_test.tolist()\n",
    "# pd.Series(x_test)\n",
    "\n",
    "X = np.reshape(X,(1374, 1, 50) )\n",
    "X = X.tolist()\n",
    "# pd.Series(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d7e63ee",
   "metadata": {},
   "source": [
    "# 모델 정의"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15ec05a4",
   "metadata": {},
   "source": [
    "### batch, epoch 설정"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "038aecbf",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Config():\n",
    "    train_batch_size = 32\n",
    "    test_batch_size = 1\n",
    "    train_number_epochs = 500"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "846d6110",
   "metadata": {},
   "source": [
    "### dataloader "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8d7219d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "class SiameseNetworkDataset(Dataset):\n",
    "    \n",
    "    def __init__(self,imageFolderDataset, label, train_batch_size):\n",
    "        self.imageFolderDataset = imageFolderDataset\n",
    "        self.label = label   \n",
    "        self.train_batch_size = train_batch_size\n",
    "        \n",
    "    def __getitem__(self,index):\n",
    "        \n",
    "        \n",
    "        img0_tuple = random.randint(0,len(self.label)-1) \n",
    "        \n",
    "        #we need to make sure approx 50% of images are in the same class\n",
    "        should_get_same_class = random.randint(0,1) \n",
    "        if should_get_same_class:\n",
    "            while True:\n",
    "                #keep looping till the same class image is found\n",
    "                img1_tuple = random.randint(0,len(self.label)-1) \n",
    "                \n",
    "                if self.label[img0_tuple] == self.label[img1_tuple]:\n",
    "                    break\n",
    "        else:\n",
    "            while True:\n",
    "                \n",
    "                #keep looping till a different class image is found\n",
    "                img1_tuple = random.randint(0,len(self.label)-1) \n",
    "                if self.label[img0_tuple] != self.label[img1_tuple]:\n",
    "                    break\n",
    "        \n",
    "        \n",
    "#         print(self.label[img0_tuple])\n",
    "#         print(self.label[img1_tuple])\n",
    "#         print(int(self.label[img0_tuple] == self.label[img1_tuple]))\n",
    "#         print(\"\\n\")\n",
    "        \n",
    "        \n",
    "        \n",
    "        img0 = self.imageFolderDataset[img0_tuple]\n",
    "        img1 = self.imageFolderDataset[img1_tuple]\n",
    "        \n",
    "        img0 = torch.Tensor(img0)\n",
    "        img1 = torch.Tensor(img1)\n",
    "#         print(img0)\n",
    "#         print(\"\\n\")\n",
    "#         print(np.shape(img0))\n",
    "\n",
    "#         print(np.shape(img0))\n",
    "\n",
    "\n",
    "\n",
    "        return img0, img1 , torch.from_numpy(np.array([int(self.label[img0_tuple] == self.label[img1_tuple])],dtype=np.float32))\n",
    "    \n",
    "    def __len__(self):\n",
    "        return (int(len(self.imageFolderDataset)-1)//(self.train_batch_size))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d54f0410",
   "metadata": {},
   "outputs": [],
   "source": [
    "class SiameseNetworkDataset_test(Dataset):\n",
    "    \n",
    "    def __init__(self,imageFolderDataset, label, train_batch_size):\n",
    "        self.imageFolderDataset = imageFolderDataset\n",
    "        self.label = label   \n",
    "        self.train_batch_size = train_batch_size\n",
    "        \n",
    "    def __getitem__(self,index):\n",
    "        index = int(index)\n",
    "        \n",
    "        img0_tuple = index // int(len(self.label))\n",
    "        img1_tuple = index % int(len(self.label))\n",
    "        \n",
    "        \n",
    "        img0 = self.imageFolderDataset[img0_tuple]\n",
    "        img1 = self.imageFolderDataset[img1_tuple]\n",
    "        \n",
    "        \n",
    "#         print(self.label[img0_tuple])\n",
    "#         print(self.label[img1_tuple])\n",
    "#         print(int(self.label[img0_tuple] == self.label[img1_tuple]))\n",
    "#         print(\"\\n\")\n",
    "        \n",
    "        \n",
    "        \n",
    "        img0 = torch.Tensor(img0)\n",
    "        img1 = torch.Tensor(img1)\n",
    "#         print(img0)\n",
    "#         print(\"\\n\")\n",
    "#         print(np.shape(img0))\n",
    "\n",
    "#         print(np.shape(img0))\n",
    "\n",
    "\n",
    "\n",
    "        return img0, img1 , torch.from_numpy(np.array([int(self.label[img0_tuple] == self.label[img1_tuple])],dtype=np.float32))\n",
    "    \n",
    "    def __len__(self):\n",
    "        return int(len(self.imageFolderDataset)) * len(self.imageFolderDataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "500a0cb5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "int"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(Config.train_batch_size)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a434f9fb",
   "metadata": {},
   "source": [
    "## train_dataloader "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "14ab4485",
   "metadata": {},
   "outputs": [],
   "source": [
    "siamese_dataset = SiameseNetworkDataset(imageFolderDataset=X, label = Y, train_batch_size  = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "02e51aed",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_dataloader = DataLoader(siamese_dataset, Config.train_batch_size, shuffle=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5eac08e0",
   "metadata": {},
   "source": [
    "### 트레인 로더 잘 작동되는지 한단계씩 확인"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "7ab96ad5",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataiter = iter(train_dataloader)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4797f0ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "example_batch = next(dataiter)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "aedce75c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([32, 1, 50])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.shape(example_batch[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "b746544b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-0.0067, -0.0063, -0.0043,  ..., -0.0059, -0.0061, -0.0063]],\n",
       "\n",
       "        [[-0.0069, -0.0059, -0.0034,  ..., -0.0059, -0.0062, -0.0065]],\n",
       "\n",
       "        [[-0.0022, -0.0021, -0.0018,  ..., -0.0018, -0.0019, -0.0020]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[-0.0061, -0.0058, -0.0040,  ..., -0.0052, -0.0055, -0.0057]],\n",
       "\n",
       "        [[-0.0017, -0.0016, -0.0013,  ..., -0.0013, -0.0014, -0.0016]],\n",
       "\n",
       "        [[-0.0096, -0.0090, -0.0077,  ..., -0.0093, -0.0096, -0.0100]]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example_batch[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "7f8b1ab3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [1.],\n",
       "        [1.],\n",
       "        [1.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [1.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [0.],\n",
       "        [1.],\n",
       "        [1.],\n",
       "        [0.]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example_batch[2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0b2f371",
   "metadata": {},
   "source": [
    "### SiameseNetwork"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "bcc7790d",
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "class SiameseNetwork(nn.Module):\n",
    "\n",
    "    def __init__(self):\n",
    "        super(SiameseNetwork, self).__init__()\n",
    "        self.cnn1 = nn.Sequential(\n",
    "            nn.Conv1d(1, 16, kernel_size=5),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool1d(2),\n",
    "            nn.BatchNorm1d(16),\n",
    "\n",
    "            \n",
    "            nn.Conv1d(16, 32, kernel_size=3),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool1d(2),\n",
    "            nn.BatchNorm1d(32),\n",
    "\n",
    "\n",
    "            \n",
    "            nn.Conv1d(32, 64, kernel_size=3),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool1d(2),\n",
    "            nn.BatchNorm1d(64),\n",
    "            \n",
    "            nn.Flatten(),\n",
    "        )\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "        self.fc = nn.Sequential(\n",
    "            nn.Linear(256 , 64),\n",
    "            nn.ReLU(inplace=True),\n",
    "\n",
    "            nn.Linear(64, 16),\n",
    "            nn.ReLU(inplace=True),\n",
    "\n",
    "            nn.Linear(16, 1),\n",
    "            nn.Sigmoid())\n",
    "\n",
    "\n",
    "#     def forward_once(self, x):\n",
    "#         output = self.cnn1(x)\n",
    "#         output = self.fc1(output)\n",
    "#         return output\n",
    "\n",
    "    def forward(self, input1, input2):\n",
    "        output1 = self.cnn1(input1)\n",
    "        output2 = self.cnn1(input2)\n",
    "        \n",
    "        sub = torch.subtract(output1,output2, alpha=1)\n",
    "        \n",
    "        \n",
    "        \n",
    "        output = self.fc(sub)\n",
    "\n",
    "        \n",
    "#         print(output)\n",
    "\n",
    "        return output"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8081ce0d",
   "metadata": {},
   "source": [
    "# 모델 학습"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "1e31c8bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_dataloader = DataLoader(siamese_dataset,\n",
    "                        shuffle=False,\n",
    "                        num_workers=0,\n",
    "                        batch_size=Config.train_batch_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "5406aa74",
   "metadata": {},
   "outputs": [],
   "source": [
    "net = SiameseNetwork()\n",
    "criterion = torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')\n",
    "\n",
    "optimizer = optim.Adam(net.parameters(),lr = 0.0001 )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "dbc8428c",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'net' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Input \u001b[1;32mIn [1]\u001b[0m, in \u001b[0;36m<cell line: 3>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[38;5;66;03m#모델 구조 확인\u001b[39;00m\n\u001b[0;32m      2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtorchsummary\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m torchsummary\u001b[38;5;241m.\u001b[39msummary(\u001b[43mnet\u001b[49m,[(\u001b[38;5;241m1\u001b[39m,\u001b[38;5;241m50\u001b[39m), (\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m50\u001b[39m)])\n",
      "\u001b[1;31mNameError\u001b[0m: name 'net' is not defined"
     ]
    }
   ],
   "source": [
    "#모델 구조 확인\n",
    "import torchsummary\n",
    "torchsummary.summary(net,[(1,50), (1, 50)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "41ed672d",
   "metadata": {},
   "outputs": [],
   "source": [
    "counter = []\n",
    "loss_history = [] \n",
    "acc = []\n",
    "iteration_number= 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "ab17f372",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "25it [00:00, 121.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 0\n",
      " Current loss 0.6873942017555237\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.48it/s]\n",
      "13it [00:00, 128.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 1\n",
      " Current loss 0.6205788254737854\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.37it/s]\n",
      "13it [00:00, 124.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 2\n",
      " Current loss 0.6491876244544983\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.37it/s]\n",
      "10it [00:00, 98.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 3\n",
      " Current loss 0.6226509213447571\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.13it/s]\n",
      "13it [00:00, 119.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 4\n",
      " Current loss 0.540252149105072\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.48it/s]\n",
      "13it [00:00, 121.77it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 5\n",
      " Current loss 0.6203524470329285\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.04it/s]\n",
      "14it [00:00, 133.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 6\n",
      " Current loss 0.5945212244987488\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.76it/s]\n",
      "13it [00:00, 120.23it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 7\n",
      " Current loss 0.5809636116027832\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.89it/s]\n",
      "25it [00:00, 122.32it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 8\n",
      " Current loss 0.6334419250488281\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.57it/s]\n",
      "24it [00:00, 116.48it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 9\n",
      " Current loss 0.6292959451675415\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.76it/s]\n",
      "14it [00:00, 134.30it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 10\n",
      " Current loss 0.567253828048706\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.79it/s]\n",
      "13it [00:00, 128.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 11\n",
      " Current loss 0.6025446653366089\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.16it/s]\n",
      "26it [00:00, 125.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 12\n",
      " Current loss 0.5029004216194153\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.25it/s]\n",
      "26it [00:00, 126.05it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 13\n",
      " Current loss 0.5041425228118896\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.38it/s]\n",
      "13it [00:00, 123.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 14\n",
      " Current loss 0.5126028656959534\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.91it/s]\n",
      "13it [00:00, 125.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 15\n",
      " Current loss 0.4565688371658325\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.69it/s]\n",
      "9it [00:00, 86.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 16\n",
      " Current loss 0.4730013608932495\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.42it/s]\n",
      "12it [00:00, 117.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 17\n",
      " Current loss 0.47123318910598755\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.16it/s]\n",
      "11it [00:00, 100.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 18\n",
      " Current loss 0.4385242462158203\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.05it/s]\n",
      "13it [00:00, 123.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 19\n",
      " Current loss 0.5290023684501648\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.02it/s]\n",
      "12it [00:00, 116.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 20\n",
      " Current loss 0.42408111691474915\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.53it/s]\n",
      "14it [00:00, 131.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 21\n",
      " Current loss 0.44851958751678467\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.54it/s]\n",
      "26it [00:00, 128.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 22\n",
      " Current loss 0.4197174906730652\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.33it/s]\n",
      "28it [00:00, 130.71it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 23\n",
      " Current loss 0.45707404613494873\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.76it/s]\n",
      "24it [00:00, 116.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 24\n",
      " Current loss 0.3391323685646057\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.48it/s]\n",
      "14it [00:00, 132.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 25\n",
      " Current loss 0.32067811489105225\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.48it/s]\n",
      "12it [00:00, 116.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 26\n",
      " Current loss 0.2750701904296875\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.47it/s]\n",
      "12it [00:00, 119.89it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 27\n",
      " Current loss 0.43411266803741455\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.38it/s]\n",
      "13it [00:00, 124.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 28\n",
      " Current loss 0.38295209407806396\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.06it/s]\n",
      "14it [00:00, 133.97it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 29\n",
      " Current loss 0.5190617442131042\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.08it/s]\n",
      "13it [00:00, 120.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 30\n",
      " Current loss 0.37689220905303955\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.39it/s]\n",
      "13it [00:00, 124.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 31\n",
      " Current loss 0.3693016767501831\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.85it/s]\n",
      "12it [00:00, 112.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 32\n",
      " Current loss 0.4003826677799225\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.35it/s]\n",
      "12it [00:00, 116.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 33\n",
      " Current loss 0.3509021997451782\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.65it/s]\n",
      "13it [00:00, 124.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 34\n",
      " Current loss 0.3352768123149872\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.78it/s]\n",
      "11it [00:00, 107.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 35\n",
      " Current loss 0.39803895354270935\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.34it/s]\n",
      "26it [00:00, 125.95it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 36\n",
      " Current loss 0.36720582842826843\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.01it/s]\n",
      "13it [00:00, 125.04it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 37\n",
      " Current loss 0.4231468439102173\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.37it/s]\n",
      "12it [00:00, 116.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 38\n",
      " Current loss 0.26738977432250977\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.31it/s]\n",
      "13it [00:00, 129.96it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 39\n",
      " Current loss 0.41808655858039856\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.01it/s]\n",
      "13it [00:00, 126.34it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 40\n",
      " Current loss 0.28681042790412903\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.56it/s]\n",
      "11it [00:00, 103.34it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 41\n",
      " Current loss 0.23768723011016846\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.98it/s]\n",
      "14it [00:00, 133.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 42\n",
      " Current loss 0.4295562505722046\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 130.92it/s]\n",
      "13it [00:00, 126.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 43\n",
      " Current loss 0.18315061926841736\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.10it/s]\n",
      "13it [00:00, 123.61it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 44\n",
      " Current loss 0.3649510443210602\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.43it/s]\n",
      "13it [00:00, 125.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 45\n",
      " Current loss 0.3490903973579407\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.25it/s]\n",
      "26it [00:00, 129.49it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 46\n",
      " Current loss 0.28487205505371094\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 130.87it/s]\n",
      "14it [00:00, 131.30it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 47\n",
      " Current loss 0.3230862617492676\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.99it/s]\n",
      "13it [00:00, 119.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 48\n",
      " Current loss 0.28624725341796875\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.92it/s]\n",
      "14it [00:00, 131.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 49\n",
      " Current loss 0.30587369203567505\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.08it/s]\n",
      "14it [00:00, 130.57it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 50\n",
      " Current loss 0.16589660942554474\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.81it/s]\n",
      "13it [00:00, 127.07it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 51\n",
      " Current loss 0.28437018394470215\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.56it/s]\n",
      "14it [00:00, 130.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 52\n",
      " Current loss 0.21320132911205292\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.46it/s]\n",
      "26it [00:00, 125.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 53\n",
      " Current loss 0.12703709304332733\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.56it/s]\n",
      "12it [00:00, 112.04it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 54\n",
      " Current loss 0.2868833541870117\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.22it/s]\n",
      "11it [00:00, 108.41it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 55\n",
      " Current loss 0.16180573403835297\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.27it/s]\n",
      "13it [00:00, 128.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 56\n",
      " Current loss 0.2089202105998993\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 132.81it/s]\n",
      "14it [00:00, 135.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 57\n",
      " Current loss 0.21453310549259186\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 130.44it/s]\n",
      "26it [00:00, 122.41it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 58\n",
      " Current loss 0.1899082362651825\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.82it/s]\n",
      "13it [00:00, 124.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 59\n",
      " Current loss 0.21136356890201569\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 127.59it/s]\n",
      "28it [00:00, 135.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 60\n",
      " Current loss 0.13646836578845978\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 133.10it/s]\n",
      "22it [00:00, 111.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 61\n",
      " Current loss 0.2843274176120758\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.08it/s]\n",
      "26it [00:00, 126.91it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 62\n",
      " Current loss 0.16946235299110413\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.83it/s]\n",
      "13it [00:00, 127.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 63\n",
      " Current loss 0.1463555246591568\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 127.66it/s]\n",
      "13it [00:00, 121.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 64\n",
      " Current loss 0.2022690773010254\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.18it/s]\n",
      "27it [00:00, 129.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 65\n",
      " Current loss 0.16846051812171936\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 127.66it/s]\n",
      "14it [00:00, 133.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 66\n",
      " Current loss 0.1266535520553589\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.56it/s]\n",
      "13it [00:00, 124.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 67\n",
      " Current loss 0.25287261605262756\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.95it/s]\n",
      "14it [00:00, 132.36it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 68\n",
      " Current loss 0.16970345377922058\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 128.79it/s]\n",
      "27it [00:00, 129.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 69\n",
      " Current loss 0.2628478705883026\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.30it/s]\n",
      "13it [00:00, 125.45it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 70\n",
      " Current loss 0.22542251646518707\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.91it/s]\n",
      "14it [00:00, 133.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 71\n",
      " Current loss 0.28352460265159607\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 130.19it/s]\n",
      "26it [00:00, 127.44it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 72\n",
      " Current loss 0.2662690579891205\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.85it/s]\n",
      "14it [00:00, 131.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 73\n",
      " Current loss 0.06119176000356674\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.46it/s]\n",
      "12it [00:00, 118.69it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 74\n",
      " Current loss 0.36666640639305115\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.39it/s]\n",
      "13it [00:00, 125.25it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 75\n",
      " Current loss 0.2801896929740906\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.15it/s]\n",
      "14it [00:00, 129.48it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 76\n",
      " Current loss 0.23347072303295135\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.58it/s]\n",
      "14it [00:00, 132.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 77\n",
      " Current loss 0.3537100851535797\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.46it/s]\n",
      "12it [00:00, 119.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 78\n",
      " Current loss 0.13843272626399994\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.00it/s]\n",
      "12it [00:00, 119.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 79\n",
      " Current loss 0.32958534359931946\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.10it/s]\n",
      "14it [00:00, 131.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 80\n",
      " Current loss 0.12980720400810242\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.62it/s]\n",
      "27it [00:00, 133.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 81\n",
      " Current loss 0.13366065919399261\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 130.65it/s]\n",
      "13it [00:00, 126.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 82\n",
      " Current loss 0.14883092045783997\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 128.83it/s]\n",
      "26it [00:00, 127.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 83\n",
      " Current loss 0.19910438358783722\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.47it/s]\n",
      "14it [00:00, 132.40it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 84\n",
      " Current loss 0.2212025672197342\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 133.11it/s]\n",
      "27it [00:00, 132.32it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 85\n",
      " Current loss 0.3271309733390808\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.54it/s]\n",
      "14it [00:00, 131.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 86\n",
      " Current loss 0.19403646886348724\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 128.15it/s]\n",
      "26it [00:00, 121.71it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 87\n",
      " Current loss 0.22018909454345703\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.82it/s]\n",
      "14it [00:00, 133.81it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 88\n",
      " Current loss 0.1292051374912262\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 130.67it/s]\n",
      "14it [00:00, 131.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 89\n",
      " Current loss 0.232122004032135\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.81it/s]\n",
      "27it [00:00, 133.93it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 90\n",
      " Current loss 0.10451162606477737\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 131.78it/s]\n",
      "27it [00:00, 130.33it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 91\n",
      " Current loss 0.12791308760643005\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.27it/s]\n",
      "10it [00:00, 91.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 92\n",
      " Current loss 0.22473867237567902\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.81it/s]\n",
      "27it [00:00, 132.96it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 93\n",
      " Current loss 0.23276473581790924\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 129.45it/s]\n",
      "26it [00:00, 125.86it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 94\n",
      " Current loss 0.18929854035377502\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 127.43it/s]\n",
      "25it [00:00, 122.48it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 95\n",
      " Current loss 0.053703684359788895\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.40it/s]\n",
      "28it [00:00, 134.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 96\n",
      " Current loss 0.15968240797519684\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 127.60it/s]\n",
      "13it [00:00, 129.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 97\n",
      " Current loss 0.12766945362091064\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 128.26it/s]\n",
      "14it [00:00, 137.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 98\n",
      " Current loss 0.1294582486152649\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 132.86it/s]\n",
      "13it [00:00, 124.74it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 99\n",
      " Current loss 0.1431034505367279\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.20it/s]\n",
      "13it [00:00, 126.40it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 100\n",
      " Current loss 0.07259485125541687\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 128.27it/s]\n",
      "13it [00:00, 128.31it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 101\n",
      " Current loss 0.2109539657831192\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.79it/s]\n",
      "24it [00:00, 113.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 102\n",
      " Current loss 0.127412348985672\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.39it/s]\n",
      "13it [00:00, 121.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 103\n",
      " Current loss 0.10969635099172592\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.83it/s]\n",
      "13it [00:00, 125.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 104\n",
      " Current loss 0.1971609741449356\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.56it/s]\n",
      "24it [00:00, 116.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 105\n",
      " Current loss 0.14186152815818787\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.95it/s]\n",
      "12it [00:00, 119.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 106\n",
      " Current loss 0.10256554931402206\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.00it/s]\n",
      "11it [00:00, 105.36it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 107\n",
      " Current loss 0.1523185670375824\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.18it/s]\n",
      "26it [00:00, 125.70it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 108\n",
      " Current loss 0.12078298628330231\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.97it/s]\n",
      "13it [00:00, 123.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 109\n",
      " Current loss 0.10953518748283386\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.88it/s]\n",
      "12it [00:00, 111.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 110\n",
      " Current loss 0.1285802721977234\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.79it/s]\n",
      "12it [00:00, 119.54it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 111\n",
      " Current loss 0.092421755194664\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.69it/s]\n",
      "13it [00:00, 123.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 112\n",
      " Current loss 0.10852919518947601\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.55it/s]\n",
      "13it [00:00, 121.03it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 113\n",
      " Current loss 0.05620763823390007\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.99it/s]\n",
      "26it [00:00, 126.83it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 114\n",
      " Current loss 0.07851378619670868\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.48it/s]\n",
      "12it [00:00, 116.95it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 115\n",
      " Current loss 0.30947527289390564\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.22it/s]\n",
      "13it [00:00, 127.61it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 116\n",
      " Current loss 0.29257866740226746\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.81it/s]\n",
      "13it [00:00, 122.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 117\n",
      " Current loss 0.1359969824552536\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.12it/s]\n",
      "13it [00:00, 122.44it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 118\n",
      " Current loss 0.14607536792755127\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.60it/s]\n",
      "13it [00:00, 119.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 119\n",
      " Current loss 0.20052188634872437\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.26it/s]\n",
      "12it [00:00, 114.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 120\n",
      " Current loss 0.21556541323661804\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.59it/s]\n",
      "26it [00:00, 129.08it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 121\n",
      " Current loss 0.19462378323078156\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.45it/s]\n",
      "26it [00:00, 125.57it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 122\n",
      " Current loss 0.11995013803243637\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.15it/s]\n",
      "13it [00:00, 120.61it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 123\n",
      " Current loss 0.29458677768707275\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.94it/s]\n",
      "13it [00:00, 121.45it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 124\n",
      " Current loss 0.0975516140460968\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.64it/s]\n",
      "25it [00:00, 118.37it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 125\n",
      " Current loss 0.09742703288793564\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.87it/s]\n",
      "12it [00:00, 117.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 126\n",
      " Current loss 0.14843863248825073\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.62it/s]\n",
      "13it [00:00, 127.99it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 127\n",
      " Current loss 0.11238105595111847\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.56it/s]\n",
      "13it [00:00, 124.49it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 128\n",
      " Current loss 0.12339265644550323\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.52it/s]\n",
      "12it [00:00, 117.80it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 129\n",
      " Current loss 0.09798842668533325\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.72it/s]\n",
      "26it [00:00, 122.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 130\n",
      " Current loss 0.2827434539794922\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.59it/s]\n",
      "13it [00:00, 126.89it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 131\n",
      " Current loss 0.19685925543308258\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.89it/s]\n",
      "26it [00:00, 125.97it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 132\n",
      " Current loss 0.3674885928630829\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.23it/s]\n",
      "13it [00:00, 126.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 133\n",
      " Current loss 0.20713546872138977\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.99it/s]\n",
      "13it [00:00, 120.33it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 134\n",
      " Current loss 0.3295093774795532\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.80it/s]\n",
      "11it [00:00, 104.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 135\n",
      " Current loss 0.08651696145534515\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.91it/s]\n",
      "12it [00:00, 115.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 136\n",
      " Current loss 0.1957612931728363\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.34it/s]\n",
      "12it [00:00, 116.37it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 137\n",
      " Current loss 0.06645049154758453\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.94it/s]\n",
      "13it [00:00, 122.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 138\n",
      " Current loss 0.1984717696905136\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.21it/s]\n",
      "13it [00:00, 124.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 139\n",
      " Current loss 0.22538018226623535\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.25it/s]\n",
      "13it [00:00, 122.36it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 140\n",
      " Current loss 0.21210578083992004\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.26it/s]\n",
      "13it [00:00, 129.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 141\n",
      " Current loss 0.04852314293384552\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.25it/s]\n",
      "12it [00:00, 116.60it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 142\n",
      " Current loss 0.09869623184204102\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.07it/s]\n",
      "24it [00:00, 119.44it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 143\n",
      " Current loss 0.09000784903764725\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.91it/s]\n",
      "13it [00:00, 123.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 144\n",
      " Current loss 0.22660839557647705\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.36it/s]\n",
      "13it [00:00, 124.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 145\n",
      " Current loss 0.11322390288114548\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.63it/s]\n",
      "13it [00:00, 121.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 146\n",
      " Current loss 0.17453476786613464\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.26it/s]\n",
      "13it [00:00, 121.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 147\n",
      " Current loss 0.11206010729074478\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.91it/s]\n",
      "13it [00:00, 121.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 148\n",
      " Current loss 0.06165812909603119\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.03it/s]\n",
      "12it [00:00, 118.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 149\n",
      " Current loss 0.04806686192750931\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.12it/s]\n",
      "13it [00:00, 126.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 150\n",
      " Current loss 0.11514458805322647\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.85it/s]\n",
      "13it [00:00, 123.83it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 151\n",
      " Current loss 0.17141073942184448\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.29it/s]\n",
      "26it [00:00, 125.76it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 152\n",
      " Current loss 0.06023728847503662\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.09it/s]\n",
      "13it [00:00, 124.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 153\n",
      " Current loss 0.12543736398220062\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.55it/s]\n",
      "14it [00:00, 131.77it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 154\n",
      " Current loss 0.09941066056489944\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.12it/s]\n",
      "26it [00:00, 125.95it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 155\n",
      " Current loss 0.1131075918674469\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.77it/s]\n",
      "25it [00:00, 125.09it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 156\n",
      " Current loss 0.07314937561750412\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.53it/s]\n",
      "14it [00:00, 133.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 157\n",
      " Current loss 0.06884986162185669\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.90it/s]\n",
      "13it [00:00, 122.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 158\n",
      " Current loss 0.11157482117414474\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.04it/s]\n",
      "12it [00:00, 118.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 159\n",
      " Current loss 0.27650338411331177\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.95it/s]\n",
      "13it [00:00, 121.66it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 160\n",
      " Current loss 0.09203726798295975\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.60it/s]\n",
      "13it [00:00, 121.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 161\n",
      " Current loss 0.04703902080655098\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.11it/s]\n",
      "13it [00:00, 123.27it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 162\n",
      " Current loss 0.06285890936851501\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.23it/s]\n",
      "25it [00:00, 123.98it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 163\n",
      " Current loss 0.09140282869338989\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.74it/s]\n",
      "13it [00:00, 124.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 164\n",
      " Current loss 0.07525434345006943\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.56it/s]\n",
      "25it [00:00, 123.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 165\n",
      " Current loss 0.1247035413980484\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.89it/s]\n",
      "13it [00:00, 123.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 166\n",
      " Current loss 0.06526452302932739\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.40it/s]\n",
      "13it [00:00, 129.94it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 167\n",
      " Current loss 0.1042981967329979\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.60it/s]\n",
      "26it [00:00, 127.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 168\n",
      " Current loss 0.0712900385260582\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.00it/s]\n",
      "13it [00:00, 124.33it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 169\n",
      " Current loss 0.09444447606801987\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.09it/s]\n",
      "13it [00:00, 129.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 170\n",
      " Current loss 0.08910375833511353\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.80it/s]\n",
      "13it [00:00, 124.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 171\n",
      " Current loss 0.24310941994190216\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.42it/s]\n",
      "12it [00:00, 111.93it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 172\n",
      " Current loss 0.10192867368459702\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 100.98it/s]\n",
      "12it [00:00, 113.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 173\n",
      " Current loss 0.06915967166423798\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.21it/s]\n",
      "26it [00:00, 129.09it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 174\n",
      " Current loss 0.0384259894490242\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.83it/s]\n",
      "13it [00:00, 123.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 175\n",
      " Current loss 0.14121279120445251\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.05it/s]\n",
      "13it [00:00, 124.25it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 176\n",
      " Current loss 0.2038528472185135\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.22it/s]\n",
      "13it [00:00, 121.74it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 177\n",
      " Current loss 0.1520489752292633\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.83it/s]\n",
      "13it [00:00, 121.83it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 178\n",
      " Current loss 0.04753623530268669\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.99it/s]\n",
      "13it [00:00, 123.34it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 179\n",
      " Current loss 0.07292760908603668\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.77it/s]\n",
      "25it [00:00, 122.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 180\n",
      " Current loss 0.04066552221775055\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.65it/s]\n",
      "13it [00:00, 122.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 181\n",
      " Current loss 0.19260673224925995\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.76it/s]\n",
      "12it [00:00, 119.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 182\n",
      " Current loss 0.05941830575466156\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.70it/s]\n",
      "13it [00:00, 124.27it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 183\n",
      " Current loss 0.014779265969991684\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.85it/s]\n",
      "13it [00:00, 119.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 184\n",
      " Current loss 0.11147522926330566\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.64it/s]\n",
      "25it [00:00, 122.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 185\n",
      " Current loss 0.14738288521766663\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.48it/s]\n",
      "13it [00:00, 124.08it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 186\n",
      " Current loss 0.11024952679872513\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.52it/s]\n",
      "13it [00:00, 119.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 187\n",
      " Current loss 0.159884512424469\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.54it/s]\n",
      "27it [00:00, 129.70it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 188\n",
      " Current loss 0.1573033183813095\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.17it/s]\n",
      "25it [00:00, 122.46it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 189\n",
      " Current loss 0.06524758785963058\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.42it/s]\n",
      "12it [00:00, 115.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 190\n",
      " Current loss 0.14065849781036377\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.41it/s]\n",
      "14it [00:00, 133.76it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 191\n",
      " Current loss 0.0927344337105751\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.59it/s]\n",
      "12it [00:00, 115.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 192\n",
      " Current loss 0.08415503799915314\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.53it/s]\n",
      "24it [00:00, 117.02it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 193\n",
      " Current loss 0.12962450087070465\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.01it/s]\n",
      "14it [00:00, 134.02it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 194\n",
      " Current loss 0.03176741302013397\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.38it/s]\n",
      "13it [00:00, 122.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 195\n",
      " Current loss 0.1257338970899582\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.38it/s]\n",
      "26it [00:00, 126.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 196\n",
      " Current loss 0.12309317290782928\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.20it/s]\n",
      "13it [00:00, 121.91it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 197\n",
      " Current loss 0.14530637860298157\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.40it/s]\n",
      "13it [00:00, 127.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 198\n",
      " Current loss 0.16638310253620148\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.88it/s]\n",
      "11it [00:00, 107.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 199\n",
      " Current loss 0.07849191129207611\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.35it/s]\n",
      "13it [00:00, 124.37it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 200\n",
      " Current loss 0.10802282392978668\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.47it/s]\n",
      "25it [00:00, 120.23it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 201\n",
      " Current loss 0.06891946494579315\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.92it/s]\n",
      "12it [00:00, 115.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 202\n",
      " Current loss 0.24846459925174713\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.53it/s]\n",
      "13it [00:00, 123.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 203\n",
      " Current loss 0.07730758935213089\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.34it/s]\n",
      "12it [00:00, 117.78it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 204\n",
      " Current loss 0.19656625390052795\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.45it/s]\n",
      "27it [00:00, 127.71it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 205\n",
      " Current loss 0.078175388276577\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.99it/s]\n",
      "12it [00:00, 114.95it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 206\n",
      " Current loss 0.033830106258392334\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.71it/s]\n",
      "13it [00:00, 123.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 207\n",
      " Current loss 0.042230576276779175\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.96it/s]\n",
      "14it [00:00, 130.02it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 208\n",
      " Current loss 0.06849953532218933\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 126.59it/s]\n",
      "12it [00:00, 112.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 209\n",
      " Current loss 0.17419065535068512\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.07it/s]\n",
      "13it [00:00, 126.04it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 210\n",
      " Current loss 0.03808547183871269\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.04it/s]\n",
      "13it [00:00, 126.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 211\n",
      " Current loss 0.18385598063468933\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.35it/s]\n",
      "25it [00:00, 122.94it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 212\n",
      " Current loss 0.06607536226511002\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.02it/s]\n",
      "13it [00:00, 124.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 213\n",
      " Current loss 0.22616833448410034\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.34it/s]\n",
      "24it [00:00, 115.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 214\n",
      " Current loss 0.13933223485946655\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.60it/s]\n",
      "12it [00:00, 114.07it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 215\n",
      " Current loss 0.12882103025913239\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.43it/s]\n",
      "13it [00:00, 124.98it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 216\n",
      " Current loss 0.05505945533514023\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.23it/s]\n",
      "13it [00:00, 123.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 217\n",
      " Current loss 0.07771312445402145\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.40it/s]\n",
      "12it [00:00, 119.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 218\n",
      " Current loss 0.120493583381176\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.80it/s]\n",
      "26it [00:00, 126.98it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 219\n",
      " Current loss 0.1594853699207306\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.22it/s]\n",
      "13it [00:00, 122.49it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 220\n",
      " Current loss 0.046245891600847244\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.27it/s]\n",
      "12it [00:00, 119.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 221\n",
      " Current loss 0.13034003973007202\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.05it/s]\n",
      "25it [00:00, 121.07it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 222\n",
      " Current loss 0.041947755962610245\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.47it/s]\n",
      "13it [00:00, 123.34it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 223\n",
      " Current loss 0.11633551120758057\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 125.77it/s]\n",
      "12it [00:00, 117.11it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 224\n",
      " Current loss 0.10023949295282364\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.94it/s]\n",
      "26it [00:00, 125.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 225\n",
      " Current loss 0.29834145307540894\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 124.27it/s]\n",
      "26it [00:00, 122.42it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 226\n",
      " Current loss 0.11775264143943787\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.97it/s]\n",
      "13it [00:00, 123.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 227\n",
      " Current loss 0.031197553500533104\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.41it/s]\n",
      "13it [00:00, 123.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 228\n",
      " Current loss 0.062476277351379395\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.17it/s]\n",
      "13it [00:00, 122.62it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 229\n",
      " Current loss 0.052873171865940094\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.83it/s]\n",
      "11it [00:00, 107.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 230\n",
      " Current loss 0.05498775467276573\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.79it/s]\n",
      "12it [00:00, 118.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 231\n",
      " Current loss 0.09095411002635956\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.72it/s]\n",
      "12it [00:00, 115.89it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 232\n",
      " Current loss 0.08284169435501099\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.76it/s]\n",
      "13it [00:00, 123.40it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 233\n",
      " Current loss 0.11379610747098923\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.21it/s]\n",
      "12it [00:00, 118.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 234\n",
      " Current loss 0.02941148355603218\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.49it/s]\n",
      "11it [00:00, 106.41it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 235\n",
      " Current loss 0.10366004705429077\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.82it/s]\n",
      "12it [00:00, 118.80it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 236\n",
      " Current loss 0.10634589195251465\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.18it/s]\n",
      "7it [00:00, 67.69it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 237\n",
      " Current loss 0.13905806839466095\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 100.74it/s]\n",
      "11it [00:00, 107.96it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 238\n",
      " Current loss 0.24315078556537628\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.85it/s]\n",
      "12it [00:00, 111.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 239\n",
      " Current loss 0.02710428461432457\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.57it/s]\n",
      "12it [00:00, 119.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 240\n",
      " Current loss 0.0650179460644722\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.25it/s]\n",
      "12it [00:00, 118.40it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 241\n",
      " Current loss 0.13484546542167664\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.01it/s]\n",
      "12it [00:00, 115.09it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 242\n",
      " Current loss 0.038753218948841095\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.82it/s]\n",
      "11it [00:00, 109.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 243\n",
      " Current loss 0.19552356004714966\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.22it/s]\n",
      "12it [00:00, 114.78it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 244\n",
      " Current loss 0.15037406980991364\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.65it/s]\n",
      "12it [00:00, 115.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 245\n",
      " Current loss 0.021659482270479202\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.30it/s]\n",
      "21it [00:00, 102.88it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 246\n",
      " Current loss 0.04129980877041817\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.36it/s]\n",
      "24it [00:00, 112.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 247\n",
      " Current loss 0.096702940762043\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.82it/s]\n",
      "12it [00:00, 111.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 248\n",
      " Current loss 0.019720235839486122\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.98it/s]\n",
      "13it [00:00, 119.53it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 249\n",
      " Current loss 0.2683715224266052\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.30it/s]\n",
      "13it [00:00, 119.49it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 250\n",
      " Current loss 0.16348780691623688\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.13it/s]\n",
      "13it [00:00, 122.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 251\n",
      " Current loss 0.12886638939380646\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.97it/s]\n",
      "12it [00:00, 110.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 252\n",
      " Current loss 0.16163264214992523\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.39it/s]\n",
      "12it [00:00, 112.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 253\n",
      " Current loss 0.03822106868028641\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.76it/s]\n",
      "26it [00:00, 120.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 254\n",
      " Current loss 0.1218704879283905\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.00it/s]\n",
      "23it [00:00, 114.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 255\n",
      " Current loss 0.03213087469339371\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.40it/s]\n",
      "12it [00:00, 112.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 256\n",
      " Current loss 0.04614415019750595\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.74it/s]\n",
      "13it [00:00, 122.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 257\n",
      " Current loss 0.08141906559467316\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.79it/s]\n",
      "22it [00:00, 109.85it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 258\n",
      " Current loss 0.07157120108604431\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.17it/s]\n",
      "12it [00:00, 117.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 259\n",
      " Current loss 0.041276346892118454\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.22it/s]\n",
      "10it [00:00, 95.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 260\n",
      " Current loss 0.03843804821372032\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 102.75it/s]\n",
      "10it [00:00, 98.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 261\n",
      " Current loss 0.05171305313706398\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 89.94it/s]\n",
      "21it [00:00, 101.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 262\n",
      " Current loss 0.0869402140378952\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 101.05it/s]\n",
      "11it [00:00, 101.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 263\n",
      " Current loss 0.11203625053167343\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.15it/s]\n",
      "11it [00:00, 109.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 264\n",
      " Current loss 0.22248893976211548\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.27it/s]\n",
      "24it [00:00, 118.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 265\n",
      " Current loss 0.0432269424200058\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.46it/s]\n",
      "12it [00:00, 113.85it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 266\n",
      " Current loss 0.12350570410490036\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.65it/s]\n",
      "11it [00:00, 106.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 267\n",
      " Current loss 0.0784793496131897\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.49it/s]\n",
      "11it [00:00, 104.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 268\n",
      " Current loss 0.04500000923871994\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.74it/s]\n",
      "12it [00:00, 116.08it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 269\n",
      " Current loss 0.033306531608104706\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.87it/s]\n",
      "12it [00:00, 115.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 270\n",
      " Current loss 0.060712866485118866\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.46it/s]\n",
      "10it [00:00, 97.85it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 271\n",
      " Current loss 0.06423857063055038\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 95.85it/s]\n",
      "22it [00:00, 106.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 272\n",
      " Current loss 0.043723881244659424\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.28it/s]\n",
      "11it [00:00, 105.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 273\n",
      " Current loss 0.24248090386390686\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.57it/s]\n",
      "12it [00:00, 114.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 274\n",
      " Current loss 0.07856455445289612\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.28it/s]\n",
      "11it [00:00, 104.91it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 275\n",
      " Current loss 0.029928084462881088\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.23it/s]\n",
      "13it [00:00, 123.24it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 276\n",
      " Current loss 0.04705313965678215\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.66it/s]\n",
      "11it [00:00, 103.58it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 277\n",
      " Current loss 0.018580399453639984\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.82it/s]\n",
      "26it [00:00, 126.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 278\n",
      " Current loss 0.04814104363322258\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.63it/s]\n",
      "11it [00:00, 101.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 279\n",
      " Current loss 0.06478675454854965\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.50it/s]\n",
      "13it [00:00, 120.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 280\n",
      " Current loss 0.19688142836093903\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.45it/s]\n",
      "12it [00:00, 109.71it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 281\n",
      " Current loss 0.19807058572769165\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.17it/s]\n",
      "13it [00:00, 124.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 282\n",
      " Current loss 0.15936562418937683\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.55it/s]\n",
      "11it [00:00, 105.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 283\n",
      " Current loss 0.08651699870824814\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.57it/s]\n",
      "10it [00:00, 95.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 284\n",
      " Current loss 0.04755377769470215\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.24it/s]\n",
      "23it [00:00, 112.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 285\n",
      " Current loss 0.23307588696479797\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.96it/s]\n",
      "7it [00:00, 67.85it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 286\n",
      " Current loss 0.03974214568734169\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 95.95it/s]\n",
      "12it [00:00, 118.03it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 287\n",
      " Current loss 0.04221393167972565\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.87it/s]\n",
      "10it [00:00, 96.47it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 288\n",
      " Current loss 0.09528212994337082\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 102.01it/s]\n",
      "11it [00:00, 102.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 289\n",
      " Current loss 0.017703667283058167\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.72it/s]\n",
      "12it [00:00, 118.47it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 290\n",
      " Current loss 0.00862579233944416\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.75it/s]\n",
      "12it [00:00, 111.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 291\n",
      " Current loss 0.04218585044145584\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.96it/s]\n",
      "12it [00:00, 119.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 292\n",
      " Current loss 0.024209480732679367\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.37it/s]\n",
      "12it [00:00, 112.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 293\n",
      " Current loss 0.044977955520153046\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.20it/s]\n",
      "13it [00:00, 122.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 294\n",
      " Current loss 0.033934008330106735\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.19it/s]\n",
      "13it [00:00, 119.30it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 295\n",
      " Current loss 0.13244850933551788\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.47it/s]\n",
      "11it [00:00, 102.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 296\n",
      " Current loss 0.017876246944069862\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.00it/s]\n",
      "12it [00:00, 113.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 297\n",
      " Current loss 0.0179598368704319\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.83it/s]\n",
      "12it [00:00, 115.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 298\n",
      " Current loss 0.027101540938019753\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.17it/s]\n",
      "12it [00:00, 110.11it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 299\n",
      " Current loss 0.05929800122976303\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.37it/s]\n",
      "12it [00:00, 114.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 300\n",
      " Current loss 0.06028322875499725\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.50it/s]\n",
      "13it [00:00, 121.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 301\n",
      " Current loss 0.08284903317689896\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.91it/s]\n",
      "13it [00:00, 128.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 302\n",
      " Current loss 0.049013905227184296\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.46it/s]\n",
      "12it [00:00, 119.30it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 303\n",
      " Current loss 0.24031229317188263\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.45it/s]\n",
      "24it [00:00, 117.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 304\n",
      " Current loss 0.08009937405586243\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.76it/s]\n",
      "13it [00:00, 119.30it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 305\n",
      " Current loss 0.0840136930346489\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.20it/s]\n",
      "12it [00:00, 109.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 306\n",
      " Current loss 0.2506415843963623\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.46it/s]\n",
      "19it [00:00, 92.60it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 307\n",
      " Current loss 0.016210071742534637\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 100.97it/s]\n",
      "13it [00:00, 123.32it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 308\n",
      " Current loss 0.16012831032276154\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.90it/s]\n",
      "13it [00:00, 124.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 309\n",
      " Current loss 0.058917272835969925\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.79it/s]\n",
      "10it [00:00, 94.81it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 310\n",
      " Current loss 0.06119171902537346\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.50it/s]\n",
      "12it [00:00, 113.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 311\n",
      " Current loss 0.18744216859340668\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.21it/s]\n",
      "24it [00:00, 114.54it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 312\n",
      " Current loss 0.0379185825586319\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.57it/s]\n",
      "11it [00:00, 108.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 313\n",
      " Current loss 0.08720468729734421\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.09it/s]\n",
      "13it [00:00, 121.08it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 314\n",
      " Current loss 0.1783258020877838\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.74it/s]\n",
      "12it [00:00, 115.25it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 315\n",
      " Current loss 0.02184601128101349\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.26it/s]\n",
      "12it [00:00, 118.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 316\n",
      " Current loss 0.0648740604519844\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.26it/s]\n",
      "12it [00:00, 111.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 317\n",
      " Current loss 0.17080220580101013\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.44it/s]\n",
      "11it [00:00, 109.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 318\n",
      " Current loss 0.03296221047639847\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.52it/s]\n",
      "12it [00:00, 114.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 319\n",
      " Current loss 0.01847708597779274\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.11it/s]\n",
      "12it [00:00, 116.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 320\n",
      " Current loss 0.14801912009716034\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.01it/s]\n",
      "13it [00:00, 120.11it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 321\n",
      " Current loss 0.05359940230846405\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.04it/s]\n",
      "12it [00:00, 119.91it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 322\n",
      " Current loss 0.09897986054420471\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.59it/s]\n",
      "12it [00:00, 109.34it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 323\n",
      " Current loss 0.07807555049657822\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.45it/s]\n",
      "13it [00:00, 123.71it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 324\n",
      " Current loss 0.10769499838352203\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.60it/s]\n",
      "24it [00:00, 114.85it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 325\n",
      " Current loss 0.1210232526063919\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.32it/s]\n",
      "11it [00:00, 102.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 326\n",
      " Current loss 0.09248052537441254\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.38it/s]\n",
      "11it [00:00, 106.05it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 327\n",
      " Current loss 0.022309893742203712\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.39it/s]\n",
      "12it [00:00, 118.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 328\n",
      " Current loss 0.03409348428249359\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.32it/s]\n",
      "24it [00:00, 115.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 329\n",
      " Current loss 0.01631702482700348\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.21it/s]\n",
      "24it [00:00, 114.69it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 330\n",
      " Current loss 0.07260818034410477\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.47it/s]\n",
      "11it [00:00, 103.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 331\n",
      " Current loss 0.01891052909195423\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.60it/s]\n",
      "13it [00:00, 120.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 332\n",
      " Current loss 0.11843113601207733\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.90it/s]\n",
      "13it [00:00, 128.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 333\n",
      " Current loss 0.04193326085805893\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.22it/s]\n",
      "13it [00:00, 122.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 334\n",
      " Current loss 0.21574458479881287\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.24it/s]\n",
      "22it [00:00, 107.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 335\n",
      " Current loss 0.05971096083521843\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.31it/s]\n",
      "24it [00:00, 117.48it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 336\n",
      " Current loss 0.011877735145390034\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.68it/s]\n",
      "10it [00:00, 97.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 337\n",
      " Current loss 0.1612904816865921\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.31it/s]\n",
      "12it [00:00, 119.27it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 338\n",
      " Current loss 0.08554471284151077\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.94it/s]\n",
      "12it [00:00, 109.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 339\n",
      " Current loss 0.015079671517014503\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.83it/s]\n",
      "13it [00:00, 126.36it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 340\n",
      " Current loss 0.25243136286735535\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.37it/s]\n",
      "12it [00:00, 116.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 341\n",
      " Current loss 0.030007656663656235\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.95it/s]\n",
      "13it [00:00, 124.45it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 342\n",
      " Current loss 0.028937984257936478\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.27it/s]\n",
      "12it [00:00, 113.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 343\n",
      " Current loss 0.09831617772579193\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.04it/s]\n",
      "12it [00:00, 115.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 344\n",
      " Current loss 0.12471847236156464\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.35it/s]\n",
      "13it [00:00, 127.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 345\n",
      " Current loss 0.027001943439245224\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.22it/s]\n",
      "13it [00:00, 126.36it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 346\n",
      " Current loss 0.01679588109254837\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 123.63it/s]\n",
      "25it [00:00, 120.60it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 347\n",
      " Current loss 0.038139741867780685\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.45it/s]\n",
      "12it [00:00, 112.23it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 348\n",
      " Current loss 0.01520753838121891\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.92it/s]\n",
      "25it [00:00, 117.66it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 349\n",
      " Current loss 0.08878295123577118\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.43it/s]\n",
      "24it [00:00, 116.78it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 350\n",
      " Current loss 0.032596487551927567\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.50it/s]\n",
      "13it [00:00, 125.86it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 351\n",
      " Current loss 0.1678706705570221\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.73it/s]\n",
      "13it [00:00, 123.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 352\n",
      " Current loss 0.12900173664093018\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.55it/s]\n",
      "11it [00:00, 107.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 353\n",
      " Current loss 0.11658990383148193\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.78it/s]\n",
      "25it [00:00, 124.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 354\n",
      " Current loss 0.03161180019378662\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 122.50it/s]\n",
      "11it [00:00, 107.98it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 355\n",
      " Current loss 0.07605220377445221\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.55it/s]\n",
      "12it [00:00, 115.66it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 356\n",
      " Current loss 0.1700587421655655\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.83it/s]\n",
      "13it [00:00, 127.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 357\n",
      " Current loss 0.1410372257232666\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.88it/s]\n",
      "12it [00:00, 114.31it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 358\n",
      " Current loss 0.06696423888206482\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.90it/s]\n",
      "12it [00:00, 113.40it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 359\n",
      " Current loss 0.07236524671316147\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.05it/s]\n",
      "12it [00:00, 110.66it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 360\n",
      " Current loss 0.07032190263271332\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.43it/s]\n",
      "12it [00:00, 118.76it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 361\n",
      " Current loss 0.06739230453968048\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.26it/s]\n",
      "12it [00:00, 118.02it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 362\n",
      " Current loss 0.025959013029932976\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.05it/s]\n",
      "12it [00:00, 115.53it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 363\n",
      " Current loss 0.08149764686822891\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.74it/s]\n",
      "11it [00:00, 106.02it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 364\n",
      " Current loss 0.27972695231437683\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.50it/s]\n",
      "13it [00:00, 122.42it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 365\n",
      " Current loss 0.014150654897093773\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.99it/s]\n",
      "12it [00:00, 118.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 366\n",
      " Current loss 0.20193645358085632\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.72it/s]\n",
      "12it [00:00, 118.78it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 367\n",
      " Current loss 0.07005178928375244\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 102.92it/s]\n",
      "12it [00:00, 110.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 368\n",
      " Current loss 0.17808392643928528\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.27it/s]\n",
      "12it [00:00, 118.92it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 369\n",
      " Current loss 0.0385664626955986\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.38it/s]\n",
      "9it [00:00, 88.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 370\n",
      " Current loss 0.03001386672258377\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.36it/s]\n",
      "12it [00:00, 119.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 371\n",
      " Current loss 0.06467505544424057\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.55it/s]\n",
      "12it [00:00, 110.60it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 372\n",
      " Current loss 0.04221900552511215\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.62it/s]\n",
      "12it [00:00, 112.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 373\n",
      " Current loss 0.15103130042552948\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.94it/s]\n",
      "12it [00:00, 114.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 374\n",
      " Current loss 0.04909300431609154\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.34it/s]\n",
      "12it [00:00, 111.77it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 375\n",
      " Current loss 0.10280470550060272\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.69it/s]\n",
      "25it [00:00, 121.05it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 376\n",
      " Current loss 0.03109084628522396\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.94it/s]\n",
      "12it [00:00, 111.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 377\n",
      " Current loss 0.06794612109661102\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.57it/s]\n",
      "13it [00:00, 128.48it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 378\n",
      " Current loss 0.027298573404550552\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.48it/s]\n",
      "12it [00:00, 119.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 379\n",
      " Current loss 0.010094229131937027\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.14it/s]\n",
      "13it [00:00, 125.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 380\n",
      " Current loss 0.03831212595105171\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 119.53it/s]\n",
      "9it [00:00, 89.80it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 381\n",
      " Current loss 0.15220005810260773\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 84.71it/s]\n",
      "10it [00:00, 98.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 382\n",
      " Current loss 0.03703102096915245\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.35it/s]\n",
      "10it [00:00, 98.44it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 383\n",
      " Current loss 0.11728028208017349\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 86.74it/s]\n",
      "12it [00:00, 113.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 384\n",
      " Current loss 0.1503336876630783\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.35it/s]\n",
      "11it [00:00, 104.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 385\n",
      " Current loss 0.013200737535953522\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 104.38it/s]\n",
      "11it [00:00, 107.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 386\n",
      " Current loss 0.06458203494548798\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.36it/s]\n",
      "11it [00:00, 109.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 387\n",
      " Current loss 0.1352815330028534\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.51it/s]\n",
      "25it [00:00, 120.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 388\n",
      " Current loss 0.0638611763715744\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.14it/s]\n",
      "24it [00:00, 116.55it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 389\n",
      " Current loss 0.030027832835912704\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.84it/s]\n",
      "13it [00:00, 121.54it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 390\n",
      " Current loss 0.028955798596143723\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.98it/s]\n",
      "11it [00:00, 101.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 391\n",
      " Current loss 0.03093765862286091\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 97.73it/s] \n",
      "26it [00:00, 125.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 392\n",
      " Current loss 0.020713893696665764\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 121.81it/s]\n",
      "11it [00:00, 104.99it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 393\n",
      " Current loss 0.016882337629795074\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.04it/s]\n",
      "13it [00:00, 127.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 394\n",
      " Current loss 0.038487859070301056\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.27it/s]\n",
      "12it [00:00, 117.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 395\n",
      " Current loss 0.07039278745651245\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.83it/s]\n",
      "26it [00:00, 123.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 396\n",
      " Current loss 0.12294953316450119\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.46it/s]\n",
      "11it [00:00, 98.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 397\n",
      " Current loss 0.06780631840229034\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 100.45it/s]\n",
      "11it [00:00, 106.76it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 398\n",
      " Current loss 0.06198339909315109\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.00it/s]\n",
      "11it [00:00, 108.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 399\n",
      " Current loss 0.03506893664598465\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 103.05it/s]\n",
      "12it [00:00, 117.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 400\n",
      " Current loss 0.11263962835073471\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 96.83it/s] \n",
      "10it [00:00, 100.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 401\n",
      " Current loss 0.026983052492141724\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 101.77it/s]\n",
      "22it [00:00, 107.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 402\n",
      " Current loss 0.129969522356987\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.96it/s]\n",
      "11it [00:00, 100.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 403\n",
      " Current loss 0.02313021570444107\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 103.92it/s]\n",
      "12it [00:00, 115.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 404\n",
      " Current loss 0.0611320324242115\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.63it/s]\n",
      "12it [00:00, 112.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 405\n",
      " Current loss 0.19805553555488586\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 103.72it/s]\n",
      "12it [00:00, 112.51it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 406\n",
      " Current loss 0.05617017671465874\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.40it/s]\n",
      "12it [00:00, 111.71it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 407\n",
      " Current loss 0.01930708810687065\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.13it/s]\n",
      "12it [00:00, 114.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 408\n",
      " Current loss 0.062116142362356186\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.18it/s]\n",
      "23it [00:00, 113.74it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 409\n",
      " Current loss 0.07594353705644608\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.06it/s]\n",
      "11it [00:00, 108.69it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 410\n",
      " Current loss 0.009858569130301476\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.57it/s]\n",
      "25it [00:00, 120.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 411\n",
      " Current loss 0.03112694062292576\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.98it/s]\n",
      "11it [00:00, 100.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 412\n",
      " Current loss 0.04746532067656517\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.55it/s]\n",
      "12it [00:00, 115.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 413\n",
      " Current loss 0.06216593086719513\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.20it/s]\n",
      "23it [00:00, 112.60it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 414\n",
      " Current loss 0.09110444784164429\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.97it/s]\n",
      "11it [00:00, 102.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 415\n",
      " Current loss 0.021925974637269974\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.10it/s]\n",
      "11it [00:00, 100.47it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 416\n",
      " Current loss 0.01696866750717163\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 99.27it/s] \n",
      "10it [00:00, 92.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 417\n",
      " Current loss 0.059554677456617355\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 94.44it/s]\n",
      "9it [00:00, 86.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 418\n",
      " Current loss 0.13187935948371887\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 91.81it/s]\n",
      "23it [00:00, 110.45it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 419\n",
      " Current loss 0.008653268218040466\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.38it/s]\n",
      "11it [00:00, 108.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 420\n",
      " Current loss 0.06228923425078392\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.48it/s]\n",
      "11it [00:00, 105.36it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 421\n",
      " Current loss 0.17066094279289246\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.89it/s]\n",
      "11it [00:00, 107.58it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 422\n",
      " Current loss 0.1304461807012558\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.47it/s]\n",
      "11it [00:00, 107.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 423\n",
      " Current loss 0.07015132158994675\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.96it/s]\n",
      "12it [00:00, 113.75it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 424\n",
      " Current loss 0.06690454483032227\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 107.37it/s]\n",
      "12it [00:00, 115.88it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 425\n",
      " Current loss 0.07480955123901367\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.08it/s]\n",
      "12it [00:00, 115.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 426\n",
      " Current loss 0.014680576510727406\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.94it/s]\n",
      "13it [00:00, 127.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 427\n",
      " Current loss 0.04094491899013519\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.77it/s]\n",
      "11it [00:00, 107.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 428\n",
      " Current loss 0.40779703855514526\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.97it/s]\n",
      "12it [00:00, 114.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 429\n",
      " Current loss 0.0459994338452816\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.26it/s]\n",
      "13it [00:00, 121.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 430\n",
      " Current loss 0.02688755840063095\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.76it/s]\n",
      "13it [00:00, 123.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 431\n",
      " Current loss 0.25682225823402405\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.35it/s]\n",
      "12it [00:00, 111.47it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 432\n",
      " Current loss 0.024608416482806206\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.24it/s]\n",
      "11it [00:00, 99.61it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 433\n",
      " Current loss 0.07858723402023315\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 106.89it/s]\n",
      "12it [00:00, 113.62it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 434\n",
      " Current loss 0.05582461878657341\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.14it/s]\n",
      "13it [00:00, 122.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 435\n",
      " Current loss 0.03943602368235588\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.83it/s]\n",
      "12it [00:00, 111.80it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 436\n",
      " Current loss 0.053151246160268784\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.87it/s]\n",
      "25it [00:00, 123.79it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 437\n",
      " Current loss 0.06030943989753723\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 120.60it/s]\n",
      "13it [00:00, 123.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 438\n",
      " Current loss 0.04348745569586754\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.14it/s]\n",
      "11it [00:00, 103.88it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 439\n",
      " Current loss 0.12445108592510223\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.35it/s]\n",
      "24it [00:00, 116.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 440\n",
      " Current loss 0.017886701971292496\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.40it/s]\n",
      "11it [00:00, 105.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 441\n",
      " Current loss 0.16577337682247162\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.76it/s]\n",
      "10it [00:00, 92.31it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 442\n",
      " Current loss 0.02368902787566185\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.59it/s]\n",
      "12it [00:00, 110.83it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 443\n",
      " Current loss 0.07838526368141174\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.43it/s]\n",
      "11it [00:00, 105.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 444\n",
      " Current loss 0.04274618998169899\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.30it/s]\n",
      "12it [00:00, 117.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 445\n",
      " Current loss 0.0393742136657238\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 101.33it/s]\n",
      "12it [00:00, 113.95it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 446\n",
      " Current loss 0.006967896595597267\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 117.62it/s]\n",
      "12it [00:00, 109.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 447\n",
      " Current loss 0.014702611602842808\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.50it/s]\n",
      "24it [00:00, 117.83it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 448\n",
      " Current loss 0.03391509875655174\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.85it/s]\n",
      "11it [00:00, 101.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 449\n",
      " Current loss 0.04776058346033096\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.37it/s]\n",
      "11it [00:00, 108.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 450\n",
      " Current loss 0.26566267013549805\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.48it/s]\n",
      "12it [00:00, 115.68it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 451\n",
      " Current loss 0.0533466711640358\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.49it/s]\n",
      "11it [00:00, 106.77it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 452\n",
      " Current loss 0.24370649456977844\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.43it/s]\n",
      "24it [00:00, 116.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 453\n",
      " Current loss 0.005561644211411476\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.73it/s]\n",
      "12it [00:00, 110.43it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 454\n",
      " Current loss 0.11152353882789612\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.95it/s]\n",
      "11it [00:00, 106.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 455\n",
      " Current loss 0.03685298562049866\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.62it/s]\n",
      "12it [00:00, 113.04it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 456\n",
      " Current loss 0.04595436900854111\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.83it/s]\n",
      "11it [00:00, 101.62it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 457\n",
      " Current loss 0.0625934973359108\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.67it/s]\n",
      "12it [00:00, 119.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 458\n",
      " Current loss 0.10082600265741348\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.69it/s]\n",
      "12it [00:00, 115.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 459\n",
      " Current loss 0.0362166129052639\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.72it/s]\n",
      "11it [00:00, 109.41it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 460\n",
      " Current loss 0.02958550490438938\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.73it/s]\n",
      "12it [00:00, 118.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 461\n",
      " Current loss 0.24241848289966583\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.85it/s]\n",
      "11it [00:00, 104.73it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 462\n",
      " Current loss 0.17656055092811584\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.32it/s]\n",
      "12it [00:00, 112.09it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 463\n",
      " Current loss 0.10749440640211105\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.14it/s]\n",
      "11it [00:00, 105.91it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 464\n",
      " Current loss 0.10351129621267319\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.46it/s]\n",
      "23it [00:00, 110.57it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 465\n",
      " Current loss 0.01473142858594656\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.29it/s]\n",
      "12it [00:00, 119.85it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 466\n",
      " Current loss 0.05544358491897583\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.56it/s]\n",
      "12it [00:00, 111.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 467\n",
      " Current loss 0.03048737160861492\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.45it/s]\n",
      "22it [00:00, 105.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 468\n",
      " Current loss 0.11158110946416855\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.70it/s]\n",
      "12it [00:00, 119.95it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 469\n",
      " Current loss 0.01918298378586769\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.12it/s]\n",
      "22it [00:00, 107.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 470\n",
      " Current loss 0.17246460914611816\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.68it/s]\n",
      "12it [00:00, 115.23it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 471\n",
      " Current loss 0.04498768970370293\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.86it/s]\n",
      "11it [00:00, 101.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 472\n",
      " Current loss 0.0759272649884224\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.08it/s]\n",
      "11it [00:00, 108.65it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 473\n",
      " Current loss 0.01394046749919653\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 101.07it/s]\n",
      "11it [00:00, 103.89it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 474\n",
      " Current loss 0.11134839057922363\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.52it/s]\n",
      "11it [00:00, 108.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 475\n",
      " Current loss 0.021836956962943077\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.54it/s]\n",
      "11it [00:00, 103.07it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 476\n",
      " Current loss 0.02141338773071766\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.86it/s]\n",
      "12it [00:00, 115.29it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 477\n",
      " Current loss 0.03237328678369522\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 112.12it/s]\n",
      "11it [00:00, 109.08it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 478\n",
      " Current loss 0.054548803716897964\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.00it/s]\n",
      "12it [00:00, 112.37it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 479\n",
      " Current loss 0.06928593665361404\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 105.42it/s]\n",
      "13it [00:00, 121.24it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 480\n",
      " Current loss 0.0261683352291584\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.61it/s]\n",
      "24it [00:00, 118.25it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 481\n",
      " Current loss 0.11598598212003708\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.99it/s]\n",
      "11it [00:00, 103.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 482\n",
      " Current loss 0.06554988771677017\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.81it/s]\n",
      "12it [00:00, 118.97it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 483\n",
      " Current loss 0.028644677251577377\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 118.64it/s]\n",
      "12it [00:00, 117.74it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 484\n",
      " Current loss 0.017707886174321175\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.87it/s]\n",
      "12it [00:00, 111.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 485\n",
      " Current loss 0.006660485174506903\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.82it/s]\n",
      "24it [00:00, 116.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 486\n",
      " Current loss 0.02681167796254158\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 116.68it/s]\n",
      "23it [00:00, 109.98it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 487\n",
      " Current loss 0.05899008736014366\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 108.03it/s]\n",
      "12it [00:00, 117.78it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 488\n",
      " Current loss 0.0293256938457489\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 114.73it/s]\n",
      "23it [00:00, 110.76it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 489\n",
      " Current loss 0.10572995990514755\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.20it/s]\n",
      "12it [00:00, 113.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 490\n",
      " Current loss 0.019434016197919846\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 115.98it/s]\n",
      "11it [00:00, 104.38it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 491\n",
      " Current loss 0.01999719813466072\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 102.64it/s]\n",
      "11it [00:00, 106.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 492\n",
      " Current loss 0.15965449810028076\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 109.06it/s]\n",
      "22it [00:00, 106.44it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 493\n",
      " Current loss 0.03984043002128601\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.45it/s]\n",
      "12it [00:00, 113.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 494\n",
      " Current loss 0.043352626264095306\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.04it/s]\n",
      "12it [00:00, 112.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 495\n",
      " Current loss 0.03977055102586746\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.80it/s]\n",
      "12it [00:00, 116.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 496\n",
      " Current loss 0.14016295969486237\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 111.85it/s]\n",
      "12it [00:00, 116.05it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 497\n",
      " Current loss 0.10233062505722046\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 102.42it/s]\n",
      "11it [00:00, 109.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 498\n",
      " Current loss 0.02577301114797592\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 110.15it/s]\n",
      "24it [00:00, 118.31it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch number 499\n",
      " Current loss 0.0287470780313015\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "43it [00:00, 113.54it/s]\n"
     ]
    }
   ],
   "source": [
    "for epoch in range(0,Config.train_number_epochs):\n",
    "    for i, data in tqdm(enumerate(train_dataloader, 0)):\n",
    "        img0, img1 , label = data\n",
    "        \n",
    "        img0, img1 , label = img0, img1 , label\n",
    "        optimizer.zero_grad()\n",
    "        output = net.forward(img0,img1)\n",
    "        \n",
    "        \n",
    "        \n",
    "        \n",
    "        loss = criterion(output, label)\n",
    "        \n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "        \n",
    "        \n",
    "        if i %100 == 0 :\n",
    "            print(\"Epoch number {}\\n Current loss {}\\n\".format(epoch,loss.item()))\n",
    "            iteration_number +=10\n",
    "            counter.append(iteration_number)\n",
    "            loss_history.append(loss.item())\n",
    "            \n",
    "#             running_accuracy += (predicted == outputs).sum().item() \n",
    "#             accuracy = (100 * running_accuracy / total)\n",
    "#             acc.append(accuracy)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "e786c742",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x21a9f4d00a0>]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(counter[:],loss_history)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "abed21ff",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "d1645ee8",
   "metadata": {},
   "source": [
    "# 모델 테스트"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "1ec654eb",
   "metadata": {},
   "outputs": [],
   "source": [
    "siamese_dataset = SiameseNetworkDataset_test(imageFolderDataset=x_test, label = label_test,train_batch_size = Config.test_batch_size )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "070a054c",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_dataloader = DataLoader(siamese_dataset, Config.test_batch_size, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7180ea28",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "671b6bb2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test(model, test_dataloader):\n",
    "    model.eval()\n",
    "    test_loss = 0\n",
    "    correct = 0\n",
    "    count  = 0\n",
    "    jenuin = []\n",
    "    imposter = []\n",
    "    \n",
    "    real = []\n",
    "    predict = []\n",
    "    \n",
    "    \n",
    "\n",
    "    # we aren't using `TripletLoss` as the MNIST dataset is simple, so `BCELoss` can do the trick.\n",
    "#     criterion = torch.nn.MSELoss(size_average=None, reduce=None, reduction='mean')\n",
    "    criterion = torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')\n",
    "\n",
    "    with torch.no_grad():\n",
    "        for i, data in enumerate(test_dataloader, 0):\n",
    "            img0, img1 , label = data\n",
    "            img0, img1 , label = img0, img1 , label\n",
    "            \n",
    "            outputs = model(img0, img1)\n",
    "            \n",
    "#             print(outputs)\n",
    "#             print(np.shape(output))\n",
    "            \n",
    "                \n",
    "            if outputs > 0.5:\n",
    "                pred = 1\n",
    "            else:\n",
    "                pred = 0\n",
    "\n",
    "\n",
    "    #             test_loss += criterion(outputs, targets).sum().item()  # sum up batch loss\n",
    "    #             pred = torch.where(outputs > 0.5, 1, 0)  # get the index of the max log-probability\n",
    "    #             correct += pred.eq(targets.view_as(pred)).sum().item()\n",
    "\n",
    "\n",
    "            if pred == label:\n",
    "                correct += 1\n",
    "            \n",
    "            \n",
    "            \n",
    "            if label == 1:\n",
    "                jenuin.append(float(outputs))\n",
    "            else:\n",
    "                imposter.append(float(outputs))\n",
    "            \n",
    "            real.append(float(label))\n",
    "            predict.append(float(outputs))\n",
    "            \n",
    "            \n",
    "#             print(label, pred)\n",
    "#             print(pred == label)\n",
    "#             print(\"\\n\")\n",
    "            \n",
    "    test_loss /= len(test_dataloader.dataset) \n",
    "\n",
    "    # for the 1st epoch, the average loss is 0.0001 and the accuracy 97-98%\n",
    "    # using default settings. After completing the 10th epoch, the average\n",
    "    # loss is 0.0000 and the accuracy 99.5-100% using default settings.\n",
    "    print('\\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "        test_loss, correct, len(test_dataloader.dataset),\n",
    "        100. * correct / len(test_dataloader.dataset)))\n",
    "    \n",
    "    return jenuin , imposter, real, predict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "1d28709d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Average loss: 0.0000, Accuracy: 477239/490000 (97%)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "jenuin , imposter, label, pred = test(net, test_dataloader)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3c5d9258",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "61d2fa3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "f = open('label__.csv', 'a', newline='')\n",
    "wr = csv.writer(f)\n",
    "wr.writerow(label)\n",
    "f.close()\n",
    "\n",
    "f = open('distance.csv', 'a', newline='')\n",
    "wr = csv.writer(f)\n",
    "wr.writerow(pred)\n",
    "f.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f6c46ace",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "97520742",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "list"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "b2a62725",
   "metadata": {},
   "outputs": [],
   "source": [
    "label = np.asarray(label, dtype=object)\n",
    "label = label.astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "8f9efd41",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "fpr, tpr, thresholds = roc_curve(label, pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "192f32b1",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "ced0d3cf",
   "metadata": {},
   "source": [
    "### 유사도 추출"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "9ef12ed0",
   "metadata": {},
   "outputs": [],
   "source": [
    "siamese_dataset = SiameseNetworkDataset(imageFolderDataset=x_test, label = label_test,train_batch_size = Config.test_batch_size )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "c5bc042d",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_dataloader = DataLoader(siamese_dataset, Config.test_batch_size, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "03be3dbe",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test(model, test_dataloader):\n",
    "    model.eval()\n",
    "    test_loss = 0\n",
    "    correct = 0\n",
    "    count  = 0\n",
    "    jenuin = []\n",
    "    imposter = []\n",
    "    \n",
    "    \n",
    "\n",
    "    # we aren't using `TripletLoss` as the MNIST dataset is simple, so `BCELoss` can do the trick.\n",
    "#     criterion = torch.nn.MSELoss(size_average=None, reduce=None, reduction='mean')\n",
    "    criterion = torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')\n",
    "\n",
    "    with torch.no_grad():\n",
    "        for i, data in enumerate(test_dataloader, 0):\n",
    "            img0, img1 , label = data\n",
    "            img0, img1 , label = img0, img1 , label\n",
    "            \n",
    "            outputs = model(img0, img1)\n",
    "            \n",
    "#             print(outputs)\n",
    "#             print(np.shape(output))\n",
    "            \n",
    "                \n",
    "            if outputs > 0.5:\n",
    "                pred = 1\n",
    "            else:\n",
    "                pred = 0\n",
    "\n",
    "\n",
    "    #             test_loss += criterion(outputs, targets).sum().item()  # sum up batch loss\n",
    "    #             pred = torch.where(outputs > 0.5, 1, 0)  # get the index of the max log-probability\n",
    "    #             correct += pred.eq(targets.view_as(pred)).sum().item()\n",
    "\n",
    "\n",
    "            if pred == label:\n",
    "                correct += 1\n",
    "            \n",
    "            \n",
    "            \n",
    "            if label == 1:\n",
    "                jenuin.append(float(outputs))\n",
    "            else:\n",
    "                imposter.append(float(outputs))\n",
    "            \n",
    "            print(label, pred)\n",
    "            print(pred == label)\n",
    "            print(\"\\n\")\n",
    "            \n",
    "    test_loss /= len(test_dataloader.dataset) \n",
    "\n",
    "    # for the 1st epoch, the average loss is 0.0001 and the accuracy 97-98%\n",
    "    # using default settings. After completing the 10th epoch, the average\n",
    "    # loss is 0.0000 and the accuracy 99.5-100% using default settings.\n",
    "    print('\\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "        test_loss, correct, len(test_dataloader.dataset),\n",
    "        100. * correct / len(test_dataloader.dataset)))\n",
    "    \n",
    "    return jenuin , imposter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "68c8b23b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 1\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 1\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 1\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 1\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 1\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 0\n",
      "tensor([[False]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[1.]]) 1\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "tensor([[0.]]) 0\n",
      "tensor([[True]])\n",
      "\n",
      "\n",
      "\n",
      "Test set: Average loss: 0.0000, Accuracy: 667/699 (95%)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "jenuin , imposter = test(net, test_dataloader)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "36c7c88d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(jenuin, bins = 40, label='Genuin')\n",
    "plt.hist(imposter, bins = 40, label='Imposter')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "2c30b7f4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# f = open('imposter.csv', 'a', newline='')\n",
    "# wr = csv.writer(f)\n",
    "# wr.writerow(imposter)\n",
    "# f.close()\n",
    "\n",
    "# f = open('genuin.csv', 'a', newline='')\n",
    "# wr = csv.writer(f)\n",
    "# wr.writerow(jenuin)\n",
    "# f.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a031c4b9",
   "metadata": {},
   "source": [
    "# 모델 저장"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "22800cc3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# PATH = './peak_5/'\n",
    "\n",
    "# torch.save(net, PATH + 'model.pt')  # 전체 모델 저장\n",
    "# torch.save(net.state_dict(), PATH + 'peak_5.pt')  # 모델 객체의 state_dict 저장\n",
    "# torch.save({\n",
    "#     'model': net.state_dict(),\n",
    "#     'optimizer': optimizer.state_dict()\n",
    "# }, PATH + 'all.tar')  # 여러 가지 값 저장, 학습 중 진행 상황 저장을 위해 epoch, loss 값 등 일반 scalar값 저장 가능"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "downgrade",
   "language": "python",
   "name": "downgrade"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
